System.Nullable<T> 結構
本文提供此 API 參考文件的補充備註。
類別 Nullable 代表可指派的實值型別 null
。
如果型別可以指派值或可指派 null
,則類型會是可為 Null 的,這表示類型沒有任何值。 根據預設,所有參考型別,例如 String、 都是可為 Null 的,但所有實值型別,例如 Int32, 則不是。
在 C# 和 Visual Basic 中,您可以使用實值類型之後的 ?
表示法,將實值類型標示為可為 Null。 例如, int?
在 C# 或 Integer?
Visual Basic 中,宣告可指派的整數實值型別 null
。
結構 Nullable<T> 僅支援使用實值型別做為可為 Null 的類型,因為參考型別的設計是可為 Null 的。
類別 Nullable 提供 結構的 Nullable<T> 互補支援。 類別 Nullable 支援取得可為 Null 型別的基礎型別,以及在基礎實值型別不支援泛型比較和相等運算的可 Null 型別配對上進行比較和相等運算。
基本屬性
結構的兩個 Nullable<T> 基本成員是 HasValue 和 Value 屬性。 HasValue如果 物件的 屬性Nullable<T>是 true
,可以使用 屬性來存取Value物件的值。 HasValue如果 屬性為 false
,則物件的值未定義,而且嘗試存取Value屬性會InvalidOperationException擲回 。
Box 處理和 Unbox 處理
當 Boxed 可為 Null 的型別時,Common Language Runtime 會自動方塊物件的基礎值 Nullable<T> ,而不是 Nullable<T> 物件本身。 也就是說,如果 HasValue 屬性是 true
,則會將 屬性的內容 Value 設為 Boxed。 將可為 Null 型別的基礎值解壓縮時,Common Language Runtime 會建立初始化為基礎值的新 Nullable<T> 結構。
HasValue
如果可為 Null 型別的 屬性為 false
,Boxing 作業的結果為 null
。 因此,如果 Boxed 可為 Null 的型別傳遞至預期物件自變數的方法,則必須準備該方法來處理自變數為 null
的案例。 當解壓縮成可為 Null 的類型時 null
,Common Language Runtime 會建立新的 Nullable<T> 結構,並將其 屬性初始化 HasValue
為 false
。
Windows 執行時間元件
您可以將類型納入 Nullable<T> 為 WinMD 連結庫中匯出之結構的成員。